#include <cstdint>
#include <iostream>
#include <istream>
#include <vector>
using ll = int64_t;
#define sl static inline
const ll maxn = 2e5+5;
ll n,m,ny=1;
ll f[maxn],ym[maxn],ys[maxn];

sl ll getf(ll a){
    if(f[a]==a)return a;
    return f[a]=getf(f[a]);
}

sl bool isame(ll a,ll b){
    return getf(a)==getf(b);
}

sl void merge(ll a,ll b){
    f[getf(a)]=getf(b);
}

int main(){
    std::iostream::sync_with_stdio(false);
    std::cin.tie(nullptr);

    std::cin>>n>>m;
    for(ll i=1;i<=n;i++)f[i]=i;
    for(ll i=1;i<=m;i++){
        ll a,b;
        std::cin>>a>>b;
        if(ym[a]){
            merge(ym[a],b);
        }else{
            ym[a]=b;
        }
    }
    for(ll i=1;i<=n;i++){
        //TODO fix传递性问题
        if(!ys[getf(i)]){
            ys[getf(i)]=ny++;
        }
        std::cout<<ys[getf(i)]<<'\n';
    }
}